package com.ruoyi.SSL.service;

import java.util.List;

import cn.hutool.json.JSONObject;
import com.ruoyi.SSL.domain.SslApply;
import com.ruoyi.SSL.domain.SslDomain;
import com.ruoyi.SSL.domain.SslTrusteeshipServiceDomain;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.Ztree;

/**
 * 证书域名管理Service接口
 *
 * @author ruoyi
 * @date 2024-10-12
 */
public interface ISslDomainService
{
    /**
     * 查询证书域名管理
     *
     * @param id 证书域名管理主键
     * @return 证书域名管理
     */
    public SslDomain selectSslDomainById(Long id);

    /**
     * 查询证书域名管理列表
     *
     * @param sslDomain 证书域名管理
     * @return 证书域名管理集合
     */
    public List<SslDomain> selectSslDomainList(SslDomain sslDomain);

    /**
     * 新增证书域名管理
     *
     * @param sslDomain 证书域名管理
     * @return 结果
     */
    public int insertSslDomain(SslDomain sslDomain);

    /**
     * 修改证书域名管理
     *
     * @param sslDomain 证书域名管理
     * @return 结果
     */
    public int updateSslDomain(SslDomain sslDomain);

    public int updateSslAuthInfoNull(SslDomain sslDomain);

    /**
     * 批量删除证书域名管理
     *
     * @param ids 需要删除的证书域名管理主键集合
     * @return 结果
     */
    public int deleteSslDomainByIds(String ids);

    /**
     * 删除证书域名管理信息
     *
     * @param id 证书域名管理主键
     * @return 结果
     */
    public int deleteSslDomainById(Long id);

    List<Ztree> selectTree(SslDomain sslDomain);


    SslDomain getByDomain(SslApply sslApply);

    AjaxResult firstEnableAutoSSL(SslDomain sslDomain);

    AjaxResult applySSL(SslDomain domain);

    /**
     * 通过域名与服务器id查询域名记录
     * @return 返回查询到的域名
     */
    SslDomain getByDomain(JSONObject sslInfo, String sslFileUrl, String privateFileUrl);

    AjaxResult applyBefor(String domainName);

}
